package com.littlec.sdk.utils;

import java.util.List;

import com.littlec.sdk.entity.AckMessage;
import com.littlec.sdk.entity.CMGroup;
import com.littlec.sdk.entity.CMMember;
import com.littlec.sdk.entity.CMMessage;
import com.littlec.sdk.entity.SystemMessage;

import android.os.Parcel;
import android.os.Parcelable;

public class CMChatListener {
	public static abstract interface OnCMListener {
		public abstract void onSuccess();

		public abstract void onFailed(String paramString);
	}

	public static abstract interface OnConnectionListener extends
			CMChatListener.OnAccountListener {
		public abstract void onReConnected();

		public abstract void onDisConnected();
	}

	private static abstract interface OnAccountListener {
		public abstract void onAccountConflict();
		public abstract void onAccountDestroyed();
	}

	public static abstract interface CMMessageReceivedCallBack {
		// 单聊消息收到时候的处理代码 单聊消息收到时候的处理代码 单聊消息收到时候的处理代码 单聊消息收到时候的处理代码 单聊消息收到时候的处理代码 单聊消息收到时候的处理代码
		public abstract void onReceivedChatMessage(CMMessage paramCMMessage);

		public abstract void onReceivedToPullMessages(CMMessage paramCMMessage,
				int paramInt);
		// 群聊消息收到时候的处理代码 群聊消息收到时候的处理代码 群聊消息收到时候的处理代码 群聊消息收到时候的处理代码 群聊消息收到时候的处理代码 群聊消息收到时候的处理代码
		public abstract void onReceivedGroupChatMessage(CMMessage paramCMMessage);
		//XXX新建群的消息处理代码 新建群的消息处理代码 新建群的消息处理代码 新建群的消息处理代码 新建群的消息处理代码 新
		public abstract void onReceivedCreateGroupMessage(
				CMMessage paramCMMessage, CMGroup paramCMGroup);
		////XXXgroupId) {//XXXgroupId) {//XXX 退群消息处理代码 退群消息处理代码 退群消息处理代码 退群消息处理代码 }
		public abstract void onReceivedExitGroupMessage(
				CMMessage paramCMMessage, String paramString);
	    //群主 XXX 将 kickedMember kickedMember kickedMember kickedMember kickedMember kickedMember移出该群 移
		public abstract void onReceivedKickMemberMessage(
				CMMessage paramCMMessage, String paramString,
				CMMember paramCMMember);
		// 群名称变更消息 群名称变更消息 群名称变更消息 群名称变更消息
		public abstract void onReceivedSetGroupNameMessage(
				CMMessage paramCMMessage, String paramString1,
				String paramString2);

		public abstract void onReceivedMemberNickChangedMessage(
				CMMessage paramCMMessage, String paramString1,
				String paramString2);
		//{//{//群成员被 群成员被 XXX XXX添加的处理代码 添加的处理代码 添加的处理代码 添
		public abstract void onReceivedAddMembersMessage(
				CMMessage paramCMMessage, String paramString,
				List<CMMember> paramList);
		// 接收系统通知 接收系统通知 接收系统通知
		public abstract void onReceivedSystemMessage(
				SystemMessage paramSystemMessage);
		// 接收到某条消息 接收到某条消息 接收到某条消息 接收到某条消息 已读
		public abstract void onReceivedAckMessage(AckMessage paramAckMessage);
		
		//群组信息发生变化
		public abstract void onReceivedGroupChangeMessage(CMMessage paramGroupMessage);
	}

	public static abstract class CMCallBack implements CMChatListener.CallBack {
		public abstract void onSuccess(CMMessage paramCMMessage);

		public abstract void onError(CMMessage paramCMMessage,
				String paramString);

		public abstract void onProgress(CMMessage paramCMMessage, int paramInt);

		public int describeContents() {
			return 0;
		}

		public void writeToParcel(Parcel dest, int flags) {
		}
	}

	public static abstract interface CallBack extends Parcelable {
		public abstract void onSuccess(CMMessage paramCMMessage);

		public abstract void onError(CMMessage paramCMMessage,
				String paramString);

		public abstract void onProgress(CMMessage paramCMMessage, int paramInt);
	}

	public static abstract interface OnGroupListener {
		public abstract void onSuccess(List<CMGroup> paramList);
		public abstract void onFailed(String paramString);
	}
	
	public static abstract interface OnInitGroupListener {
		public abstract void onSuccess(List<CMGroup> paramList);
		public abstract void onFailed(String paramString);
	}
	
//	public static abstract interface OnUserGroupListener{
//		public abstract void onSuccess(List<CMMember> members,String groupId);
//		public abstract void onFailed(String groupId);
//	}
}
